oracle on Mac OSX(VM ubuntu)¶
概要¶
Mac OSXのGuest OSでOracle XEを準備して, Host OSから扱えるようにする
Oracle database¶
- アカウントが必要なので無い場合は作成
- http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html から Oracle Database Express Edition 11g Release 2 for Linux x64 をダウンロード
- 今回は http://download.oracle.com/otn/linux/oracle11g/xe/oracle-xe-11.2.0-1.0.x86_64.rpm.zip を利用
Vagrant¶
- Oracle VM等のvirtual machineをコマンドラインから操作できる+α
- 手作業による動作ミスを防ぐために利用する
- 今回はOracle Virtual Box を利用するのでinstallしていなければinstall
Download¶
https://www.vagrantup.com/downloads.html
VagrantFile¶
- Vagrant用の設定ファイル
- 共有フォルダの指定やOSのリソース設定を記載して反映できる
Mac OSX上のubuntu VMにOracleをinstallするVagratFileを提供しているrepositoryがあるので、それを利用する
- https://github.com/hilverd/vagrant-ubuntu-oracle-xe
- gitが必要なのでinstallしておくこと(なくてもいけるけど、今後のためにinstall)
VMの準備¶
# 作業フォルダ名は自由に
mkdir -p /path/to/vagrant-oracle-xe-11-vm && cd $_
git clone git@github.com:hilverd/vagrant-ubuntu-oracle-xe.git
cd vagrant-ubuntu-oracle-xe
# VagrantFileの修正
vim VagrantFile
# timezone, flyway部分不要のため削除やコメントアウト
# sed -e '32d' -e '54d' VagrantFile
# downloadしておいたoracle fileを移動
mv ~/Downloads/oracle-xe-11.2.0-1.0.x86_64.rpm.zip modules/oracle/files/
# virtual box のguest addition用plugin
vagrant plugin install vagrant-vbguest
vagrant up
# mountできなくてError
# Virtualbox Guest Additionsをinstallできているが
# Install時では反映されない?のでreloadで対処
vagrant reload
Oracle Instant Client Package¶
http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html からダウンロード
今回は、Version 11.2.0.4.0 (64-bit)
- instantclient-basic-macos.x64-11.2.0.4.0.zip (62,794,903 bytes)
- Instant Client Package - Basic: All files required to run OCI, OCCI, and JDBC-OCI applications
- instantclient-sqlplus-macos.x64-11.2.0.4.0.zip (884,608 bytes)
- SQLPlus: Additional libraries and executable for running SQLPlus with Instant Client
- instantclient-sdk-macos.x64-11.2.0.4.0.zip (651,903 bytes)
- SDK: Additional header files and an example makefile for developing Oracle applications with Instant Client
SQLPlusの準備¶
- マニュアルどおりにやったけどうまくいかなかったので、下記を参考にした
- あるディレクトリだけで完結するので環境汚染にならない
https://blog.caseylucas.com/2013/03/03/oracle-sqlplus-and-instant-client-on-mac-osx-without-dyld_library_path/
cd ..
mv ~/Downloads/instantclient-*.zip .
# DLファイルの@を消してあげる
sudo xattr -c *
unzip instantclient-basic-macos.x64-11.2.0.4.0.zip
unzip instantclient-sqlplus-macos.x64-11.2.0.4.0.zip
cd instantclient_11_2
cat <<EOF > changeOracleLibs.sh
#!/bin/sh
# script to change the dynamic lib paths and ids for oracle instant client
# exes and libs
# proces all the executable files in this directory
find . -maxdepth 1 -type f \( -perm -1 -o \( -perm -10 -o -perm -100 \) \) -print | while read exe
do
echo adjusting executable $exe
baseexe=\`basename \$exe\`
otool -L $exe | awk '/oracle/ {print $1}' | while read lib
do
echo adjusting lib $lib
baselib=\`basename \$lib\`
if [ "$baseexe" = "$baselib" ]
then
echo changing id to $baselib for $exe
install_name_tool -id $baselib $exe
else
echo changing path id for $lib in $exe
install_name_tool -change $lib @executable_path/$baselib $exe
fi
done
done
EOF
chmod +x changeOracleLibs.sh
sudo changeOracleLibs.sh
# 必要あればPATH通してexportしておく
# export PATH=`pwd`:$PATH
# READMEどおり、 下記で接続可能だったが、あまりにも使いにくい…
sqlplus system/manager@//localhost:1521/XE
GUI(SQL Developer)¶
- http://www.oracle.com/technetwork/jp/developer-tools/sql-developer/downloads/index.html
- 接続から、system/manager, サービス:XEで接続可能
- Editor, schema, table, Export等可能
まとめ¶
- VM上のLinuxでoracle用意
- Vagrantでport forward設定
- 用意してあるVagrantFileで楽をした
- 中でPuppet使ってるのでいつか使えなくなるかもしれない
- 本来はservice設定等を自力で行う
- SQL Developer便利
- sqlplusいらなかったかもしれない
- と思ったが、sqlldrというImport用utilityを使えない
- GUIからではInsertになり、とても遅い
- 共有フォルダにファイルを用意し、
vagrant ssh
からでも可能?